package cn.iocoder.yudao.module.product.api.spu.dto;

import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.product.enums.spu.ProductSpuStatusEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

@Data
@Schema(description = "用户 App - 商品 SPU 分页 Request VO")
public class ProductSpuPageReqVO extends PageParam {

    /**
     * 商品 SPU 编号，自增
     */
    private Long id;

    // ========== 基本信息 =========

    /**
     * 商品名称
     */
    @Schema(description = "商品名称")
    private String name;

    /**
     * 商品分类编号
     */
    @Schema(description = "商品分类编号")
    private Long categoryId;
    /**
     * 商品封面图
     */
    @Schema(description = "商品封面图")
    private String picUrl;

    /**
     * 商品状态
     * <p>
     * 枚举 {@link ProductSpuStatusEnum}
     */
    @Schema(description = "商品状态")
    private Integer status;

    // ========== SKU 相关字段 =========

    /**
     * 规格类型
     *
     * false - 单规格
     * true - 多规格
     */
    @Schema(description = "规格类型：false - 单规格，true - 多规格")
    private Boolean specType;
    /**
     * 商品价格，单位使用：分
     */
    @Schema(description = "商品价格，单位使用：分")
    private Integer price;
    /**
     * 市场价，单位使用：分
     */
    @Schema(description = "市场价，单位使用：分")
    private Integer marketPrice;
    /**
     * 成本价，单位使用：分
     */
    @Schema(description = "成本价，单位使用：分")
    private Integer costPrice;
    /**
     * 库存
     */
    @Schema(description = "库存")
    private Integer stock;

    // ========== 物流相关字段 =========

    /**
     * 物流配置模板编号
     *
     * 对应 TradeDeliveryExpressTemplateDO 的 id 编号
     */
    @Schema(description = "物流配置模板编号")
    private Long deliveryTemplateId;

    // ========== 营销相关字段 =========

    /**
     * 赠送积分
     */
    @Schema(description = "赠送积分")
    private Integer giveIntegral;

    // ========== 分销相关字段 =========

    /**
     * 分销类型
     *
     * false - 默认
     * true - 自行设置
     */
    @Schema(description = "分销类型:false - 默认,true - 自行设置")
    private Boolean subCommissionType;

    @Schema(description = "积分价格")
    private Integer pointsPrice;

    @Schema(description = "积分")
    private Integer points;

    @Schema(description = "商品标签")
    private String productLabel;

    @Schema(description = "推荐理由")
    private String recommendReason;

    @Schema(description = "热度")
    private Long heat;

}
